-
Notifications
You must be signed in to change notification settings - Fork 189
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Interface Walberla LB #2701
Interface Walberla LB #2701
Conversation
Codecov Report
@@ Coverage Diff @@
## python #2701 +/- ##
========================================
- Coverage 89% 81% -8%
========================================
Files 557 559 +2
Lines 24326 25963 +1637
========================================
- Hits 21698 21100 -598
- Misses 2628 4863 +2235
Continue to review full report at Codecov.
|
Implementation status of Espresso's lb interface is here: |
@fweik, this could be a starting point for integrating boundary support. The LbWalberla class has get_node_velocity_at_boundary(const Utils::Vector3i &node) const; |
@mkuron, there still seems to be an issue with the ghost communication. |
The communication looks fine. Are you sure it's not the domain decomposition where the error is coming from? If PBCs work, then the communication is also working. |
@mkuron, I investigated the Nan-proliferation from Walberla's UBB() further. I extracted the channel test to |
You need to consistently mark cells on both sides of the PBC yourself. Communication cannot take care of that for you. So when you flag a boundary at x=0, you need to do the same at x=L. |
On Thu, Aug 15, 2019 at 04:21:07AM -0700, Michael Kuron wrote:
> when nodes are marked as boundary at one of the domain boundaires
You need to consistently mark cells on both sides of the PBC yourself. Communication cannot take care of that for you. So when you flag a boundary at x=0, you need to do the same at x=L.
Where L is the grid dimension and the index runs from 0 to L-1?
|
Exactly. So your ghost cells would be at x=-1 and X=L. |
OK, so it's not pretty, but works. In the steady state case, the shear profiles now match (testsuite/python/lb_shear.py with 500 integration steps). |
With the viscosity converted to lattice units, the time-dependent shear profile is now reproduced |
So, the boundary force from Walberla for the couette flow along the shear direction matches the expected result. (lb_shear.py) @mkuron, the UBB also reports a force perpendicular to the wall. The Walberla test for BoundaryForcecouette does not check this. Equilibrium pressure is: agrid, density, and viscosity are all !=1, but setting them to 1 doesn't help, so not unit conversions, I think. |
@RudolfWeeber you seem to have forgotten to commit |
Added it. |
Current state (to my understanding) Working:
|
src/core/unit_tests/LbWalberla.cpp
Outdated
lb.set_node_velocity(Vector3i{1, 1, 1}, v); | ||
lb.set_node_velocity(Vector3i{3, 5, 7}, v); | ||
auto mom = lb.get_momentum(); | ||
auto mom_exp = 2 * density * v; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why is this the expected momentum?
This is the current state as per the test suite. Walberla is currently limited to 2 mpi ranks. Working:
Woprking on 1 core:
Partial:
Broken:
Waiting for thermalziation:
Other:
|
The walberla::vtk objects depend on the walberla MPI communicator to close the files in parallel at program exit. Introduce a locking mechanism to extend the lifetime of the walberla MPI communicator until all VTK objects have expired.
Closes #2701 Description of changes: - replace the lattice-Boltzmann and electrokinetics features by a new implementation based on waLBerla - LB and EK kernels are automatically generated using PyStencils and LbmPy - API changes: new syntax for LB and EK classes, new syntax to add boundaries, new LB/EK output file formats
Current status:
The current plan is to merge this after the release of 4.2